Computer networks enable computers to communicate with each other and thereby provide many different services to end users, including web access, email, television, and telephone service. Networks are able to support such services across great distances by enabling communication not only between computers that are directly connected to one another, but also between computers that are connected to one another via one or more intermediate devices such as switches, routers, and other computers. Enablement of this communication often involves implementation of a reliable method for routing messages between computers through these intermediate devices.
Numerous protocols have been developed that include methods for determining how to route each message to its eventual destination. In many implementations of these protocols, each device may determine how to route a received message by using a routing table. This routing table may include a number of records that each define a “next hop” for a particular type of message. When such a device receives a message that is to be forwarded, the device may locate a record in the routing table that matches the message and proceed to forward the message to the “next hop” device identified by the record. This routing table may similarly be useful for computers that are located at an endpoint of a communication; when sending a message to a particular recipient, the sending computer may use a routing table to determine the “next hop” toward that recipient.